Module Rappels et compléments sur R et RStudio
16/01/2025
Ce diaporama de formation a été rédigé dans le but d’être le support visuel des formations dispensées au MASA.
Ces formations s’adressent à des agents qui ont suivi la formation R initialisation.
Elles sont données en présentiel sur une durée de trois journée, les modules de cette formation sont ajustables suivants le choix des agents.
Champ couvert par cette formation
Ce support couvre les rappels et complèments sur R et l’environnement du Minsitère.
Pour information, Les Modules de la formation R-perfectionnement sont:
01 - Module Rappels
02 - Module Fonctions
03 - Module Cartes statiques et interactives
04 - Module Création de graphiques avec ggplot2
05 - Module Quarto
06 - Module Parquet
07 - Module Initiation à l’écriture d’applications Shiny
Ils sont orientés pour être utile aux agents du SSM MASA et se concentrent sur une utilisation de R via RStudio qui est mise à disposition des agents sur la plateforme interne Cerise basée sur RStudio Workbench.
Logiciel de traitement de données et analyse statistique :
offre un environnement interactif de développement statistique, analytique et graphique ;
est doté d’un langage de programmation R ;
permet d’accéder à des données, de les manipuler et les analyser ;
S’interface avec les bases de données : Oracle, SYBASE, PostgreSQL, SQLITE…
Remplace SAS ou SPSS
Logiciel IDE : Integrated Development Environment
| Avantages | Inconvénients |
|---|---|
|
|
|
|
|
|
|
|
|
|
Cerise est organisé en plusieurs répertoires :
00-Espace-Personnel => espaces personnels des agents, accessible par l’agent uniquement
01-Espace-de-Partage => lieu de partage général entre les différents acteurs
02-Espace-de-Production => plateforme de stockage des données brutes collectées, ainsi que des fichiers de données et programmes issus des traitements statistiques réalisés par l’équipe projet
03-Espace-de-Diffusion => mise à disposition au sein du SSM des données issues des traitements statistiques réalisés en amont => Ces deux derniers espaces sont découpés par opérations statistiques
04-Espace-Echanges => stockage des fichiers de données à transmettre aux autres applications du SI CASSIS (par exemple Agreste) ainsi qu’aux SI des partenaires extérieurs
Objet élémentaire de R, une dimension
Ensemble de valeurs, appelées éléments, de même nature (nombres, chaînes de caractères, booléens…)
Création de vecteurs avec la fonction c() :
x ← c(TRUE, TRUE, FALSE) is.logical(x)
x ← c(8.04, 18.01, 11.05, 14.05) is.numeric(x)
x ← c("Chaîne1", "804", "Chaîne3") is.character(x)
Une array est composée d’un ou de plusieurs éléments de mêmes types, organisés en plusieurs dimensions.
x ← matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3) création d'une matrice de numériques avec deux lignes et trois colonnes, remplissage par colonne.
x ← array (c(1,2,3,4,5,6,7,8), dim=c(2,2,2)) création d'une array de numériques avec trois dimensions, chaque dimension comprenant deux éléments (~ cube)
Une data.frame est composée de vecteurs nommés de tailles égales mais pouvant être de types différents.
Une liste est composée d’objets différents.
Création avec les fonctions list() et data.frame() :
x ← list(c(TRUE, TRUE, FALSE), 1er élément : un vecteur de trois booléens
c(8.04, 18.01, 11.05, 14.05), 2e élément : un vecteur de quatre numériques
"804") 3e élément : un vecteur d'une chaîne de caractères
x ← data.frame(nom=c("Yaël","Luan","Jade"), 1er élément : un vecteur « nom » de trois chaînes de caractères
sexe = factor(c("H","F","F"), 2e élément : un vecteur « sexe » de trois chaînes de caractères
age = c(5,1,3)) 3e élément : un vecteur « age » de trois numériques
x ← c(''Marion'', ''Benjamin'', ''Hélène'', ''Raymond''))
x[1] renvoie ''Marion''
x[c(1, 2)] renvoie le vecteur c(''Marion'', ''Benjamin'')
x ← c(8.04, 18.01, 11.05, 14.05)
x[x < 10] renvoie 8.04
x[x > 10] renvoie le vecteur c(18.01, 11.05, 14.05)
x[x >10 & x < 15] renvoie le vecteur c(11.05, 14.05)
Indexation par position :
x ← matrix(c(''Marion'', ''Benjamin'', ''Hélène'', ''Raymond''), nrow = 2, ncol = 2)
x[1,] renvoie le vecteur c(''Marion'', ''Hélène'')
x[,2] renvoie le vecteur c(''Hélène'', ''Raymond'')
x[2,1] renvoie ''Benjamin''
x ← list(c(TRUE, TRUE, FALSE), c(8.04, 18.01, 11.05, 14.05), “804”)
x[[2]] renvoie le deuxième vecteur de la liste x soit c(8.04, 18.01, 11.05, 14.05)
x[[2]][1] renvoie le premier élément du deuxième vecteur de la liste x soit 8.04
x ← list(grp = c(''Auguste'', ''Justine'', ''Sébastien'', ''Anne-Marie''), prt = c(''Hélène'', ''Raymond''), enf = c(''Marion", ''Benjamin'')
x$grp renvoie le vecteur nommé ''grp'' de la liste x soit c(''Auguste'', ''Justine'', ''Sébastien'', ''Anne-Marie'')
x$enf[1] renvoie le premier élément du vecteur nommé ''enf'' de la liste x soit ''Marion''
Indexation par position : comme pour les matrices
Indexation par nom : les vecteurs d’une data.frame sont nommés et accessibles directement dans les crochets ou via l’opérateur $
Les moyens d’indexation peuvent se combiner
→ Il y a donc une multitude de façons d’accéder à une valeur dans un data.frame !
Les tables de données sont très souvent des objets de type data.frame. Fonctions utiles :
str() donne la structure de la table, names() le vecteur des noms de colonnes
head() et tail() affichent respectivement, par défaut, les 6 premières et les 6 dernières lignes de la table
dim() renvoie un vecteur composé du nombre de lignes et du nombre de colonnes de la table
La partie Manipulation de données va fournir les outils nécessaires aux traitements classiques à opérer sur une table de données.
A part pour la lecture et l’écriture de fichiers, les outils proposés relèvent des packages dplyr et tidyr : ils sont d’un usage plus aisé que les outils R de base et couvrent beaucoup des fonctionnalités les plus courantes.
Objectif de dplyr : rassembler dans un seul package les outils de manipulation de données les plus importants pour l’analyse des données
Deux principes pour les packages tidyr et dplyr :
Usage de fonctions « verbe » toutes construites sur le même principe : le premier paramètre est la table de données sur laquelle on travaille.
Usage de l’opérateur pipe (issu du package magrittr) Dans R-Studio, le raccourci clavier pour cet opérateur est : Ctrl + Shift + M
ma_table[1,] : toutes les variables pour la première observation
ma_table[,4] : toutes les observations de la 4e variable
ma_table[,''Profession''] : toutes les observations de la variable Profession
ma_table[1,4] : Première observation de la 4e variable
Avec le package dplyr :
Pour sélectionner des colonnes dans une table, on utilise la fonction
Pour filtrer les lignes dans une table à l’aide de conditions logiques, on utilise la fonction filter()
ma_table %>% filter(Profession == ''Militaire'')
ma_table %>% filter(Age < 30) %>% select(Nom_prenom)
Avec R de base, on utilise l’opérateur d’affectation :
table$new_var <- variable → formule générique
table$new_var <- valeur_constante → création d’une constante
table$new_var <- fonction(table$var1) → création à partir d’une formule
table$new_var <- table$var1 + table$var2 → création à partir d’opérations
table$new_var <- vecteur1 ou table1$new_var <- table2$var1 → création à partir de variables externes
table$new_var <- ifelse(table$varref < x, val1, val2) outable$new_var <- case_when(table$varref < x ~ val1, TRUE ~ val2) → traitement conditionnel
Avec le package dplyr, on utilise la fonction mutate() qui permet de créer plusieurs variables à la fois et permet de s’affranchir de l’indexation :
table ← table %>% mutate(new_var1 = var1, newvar2 = var2) → formule générique
table ← table %>% mutate( new_var1 = constante, → création d’une constante new_var2 = fonction(var1), → création à partir d’une formule
new_var3 = var1 + var2,→ création à partir d’opérations arithmétiques
new_var4 = vecteur1) → création à partir de variables externes
Pour modifier une variable on affecte la nouvelle valeur à une variable existante
maTable %>% arrange(variables_de_tri)
→ possibilité de trier selon plusieurs colonnes : les variables de tri doivent être séparées par une virgule.
→ on encadre les variables qu’il faut trier de façon décroissante par la fonction desc().
Il est possible de réaliser une jointure à l’aide de plusieurs variables identifiantes : l’argument by s’écrit alors c(‘’id1’‘,’‘id2’’, …)
Lorsque les variables de jointure ont des noms différents dans les deux tables, l’argument by prend comme paramètre un vecteur du type c(‘’id1_tab1’’ = ‘’id1_tab2’‘,’‘id2_tab1’’ = ‘’id2_tab2’’,…)
Si rien n’est précisé, la fusion se fait sur l’ensemble des variables portant le même nom dans les deux tables
maTable %>% summarise(fonctions_stat(variable))
maTable %>% group_by(var_groupe)%>% summarise(fonctions_stat(variable))%>% ungroup()
→ possibilité de calculer plusieurs statistiques en séparant les instructions par une virgule
→ on peut utiliser les fonctions statistiques de base telles que max, min, mean, sd, n…
→ ungroup permet de ne plus tenir compte du regroupement par la suite
![]() |
![]() ![]() |
maTable %>% pivot_wider (co l_de_noms, col_de_valeurs) |
maTable %>% p ivot_longer( variables_apiv oter , names_to = "indicate ur", values_to = "valeur") |
col_de_noms = nom de la variable dont les modalités deviendront les intitulés de colonne col_de_valeurs = nom de la variable à utiliser pour remplir les colonnes |
variables_a_pivoter = nom de l’ensemble des variables à représenter names_to = nom de la première colonne à créer values_to = nom de la deuxième colonne à créer |
| Type | Lecture | Ecriture |
|---|---|---|
| Texte | la fonction r e ader::read_delim et ses dérivées read_csv, read_csv2, read_tsv, read_fwf | la fonction r e adr::write_delim et ses dérivées write_csv, write_csv2… |
| RDS | Fonction read_rds | Fonction readr::write_rds |
| XLS | les fonctions du package readxl | les fonctions du package openxlsx |
| SAS ou SPSS | les fonctions read_sas et read_spss du package haven. Attention : il vaut mieux exporter au format texte dans le logiciel d’origine pour le lire en tant que données texte dans R. | il vaut mieux exporter au format texte et lire le fichier dans le logiciel d’origine en tant que fichier au format texte ! |
| ODS | la fonction read_ods du package readODS | la fonction write_ods du package readODS |
| Parquet | Le package arrow et dplyr |
Le package arrow et dplyr |
R offre la possibilité d’effectuer des requêtes SQL sur des bases de données externes.
Des informations pour la connexion sont nécessaires : library(RPostgres)
cnx <- dbConnect(Postgres(), dbname = ''sirene'', port = 5432, host = ''00.11.22.33'', user = ''nom_user'', password = ''mdp'')
dbGetQuery(cnx, ''SELECT * FROM TABLE'')
1.3 Comment travailler avec R au MASA ?
Depuis la plate-forme CERISE :
⇒ Adresse : https://rstudio.agriculture.rie.gouv.fr
⇒ PISTACHE : Pistache > Traitements statistiques et Diffusion > R > Migration SPSS et SAS vers R > Accès au WIKI Cerise - R > Accéder à Cerise
En local sur son poste, sans intervention de Pastel
Existence d’une plate-forme CERISE de Préproduction :
https://rstudio-pprd.agriculture.rie.gouv.fr